package model

import (
	"database/sql/driver"
	"encoding/json"
	"time"
)

type LocalTime time.Time

const TimeFormat = "2006-01-02 15:04:05"
const DateFormat = "2006-01-02"

/*
// Scan 检出数据库
// Valid == false，时间为空 ；valid==true 时间不为空

	func (n *LocalTime) Scan(value interface{}) error {
		if v, ok := value.(time.Time); ok && v.IsZero() {
			return nil
		}
		return (*sql.NullTime)(n).Scan(value)
	}

// Value 写入数据库

	func (n LocalTime) Value() (driver.Value, error) {
		if !n.Valid {
			return nil, nil
		}
		return n.Time, nil
	}

	func (n LocalTime) MarshalJSON() ([]byte, error) {
		if n.Valid {
			return json.Marshal(n.Time.Format(TimeFormat))
		}
		return json.Marshal(nil)
	}
*/

func (n LocalTime) UnmarshalJSON(b []byte) (error error) {
	if b[0] == '"' {

	}
	return
}

func (n LocalTime) MarshalJSON() ([]byte, error) {

	if !(time.Time)(n).IsZero() {
		return json.Marshal((time.Time)(n).Format(TimeFormat))
	}
	return json.Marshal(nil)
}

func (n LocalTime) Value() (driver.Value, error) {
	if (time.Time)(n).IsZero() {
		return nil, nil
	}
	return n, nil
}
